//:C12:ExplicitKeyword.cpp
// Using the "explicit" keyword
class One
{
    public:
        One(){}
};

class Two
{
    public:
        explicit Two(const One &){}
};

void f(Two){}

int main(void)
{
    One one;
    // ! f(one);   // No auto conversion allowed
    f(Two(one));    // OK -- user performs conversion
}